package es.ucm.fdi.xtremeaudio.modelo.beans;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;

import javax.swing.Timer;

import es.ucm.fdi.xtremeaudio.controlador.Controlador;
import es.ucm.fdi.xtremeaudio.modelo.dao.Player;

public class Bean {

	/** archivo mp3 actual */
	private File archivo;

	/** MP3Player del mp3 actual */
	private Player player;
		
	/** estado del reproductor (reproduciendo, parado, pausado...) */
	private String estado;
	
	/** Tiempo actual del mp3 actual en segundos */
	private int tiempoActual;

	/** Biblioteca de canciones y listas */
	private Biblioteca biblioteca;			
	
	/** Temporizador */
	private Timer timer;
	
	/** ArrayList de canciones de la busqueda */
	private ArrayList<Integer> busqueda;
	
	/** Indice si es busqueda */
	private int indiceBusqueda;
	
	/**
	 * Constructora por defecto
	 */
	public Bean() {
		archivo = null;
		player = new Player();
		estado = "Parado";
		tiempoActual = 0;
		biblioteca = new Biblioteca();
		timer = new Timer(1000, new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				Controlador.actualizaDatos();
			}
		});
	}

	/**
	 * Accesora de archivo
	 * 
	 * @return archivo
	 */
	public File getArchivo() {
		return archivo;
	}

	/**
	 * Modificadora de archivo
	 * 
	 * @param archivo
	 *            Nuevo archivo
	 */
	public void setArchivo(File archivo) {
		this.archivo = archivo;
	}

	/**
	 * Accesora de player
	 * 
	 * @return player
	 */
	public Player getPlayer() {
		return player;
	}

	/**
	 * Modificadora de player
	 * 
	 * @param player
	 *            Nuevo player
	 */
	public void setPlayer(Player player) {
		this.player = player;
	}

	/**
	 * Accesora de estado
	 * 
	 * @return estado
	 */
	public String getEstado() {
		return estado;
	}

	/**
	 * Modificadora de estado
	 * 
	 * @param estado
	 *            Nuevo estado
	 */
	public void setEstado(String estado) {
		this.estado = estado;
	}

	/**
	 * @return El tiempo actual de reproduccion
	 */
	public int getTiempoActual() {
		return tiempoActual;
	}

	/**
	 * @param El nuevo tiempo actual
	 */
	public void setTiempoActual(int tiempoActual) {
		this.tiempoActual = tiempoActual;
	}
	
	/**
	 * @return the biblioteca
	 */
	public Biblioteca getBiblioteca() {
		return biblioteca;
	}

	/**
	 * @param biblioteca the biblioteca to set
	 */
	public void setBiblioteca(Biblioteca biblioteca) {
		this.biblioteca = biblioteca;
	}

	/**
	 * @param timer
	 *            the timer to set
	 */
	public void setTimer(Timer timer) {
		this.timer = timer;
	}

	/**
	 * @return the timer
	 */
	public Timer getTimer() {
		return timer;
	}

	public void setBusqueda(ArrayList<Integer> busqueda) {
		this.busqueda = busqueda;
	}

	public ArrayList<Integer> getBusqueda() {
		return busqueda;
	}

	public void setIndiceBusqueda(int indiceBusqueda) {
		this.indiceBusqueda = indiceBusqueda;
	}

	public int getIndiceBusqueda() {
		return indiceBusqueda;
	}

}